package com.molichuxing.services.infrastructure.dto.response;

import com.molichuxing.framework.bean.RootBean;
import com.molichuxing.services.property.MaintenanceRejectEnum;
import com.molichuxing.services.property.MaintenanceStatusEnum;
import com.molichuxing.services.property.MaintenanceTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * <p>
 * 保养历史表
 * </p>
 *
 * @author xuelin yi
 * @since 2019-09-23
 */
@Data
public class MaintenanceLogDto extends RootBean {

    private static final long serialVersionUID=1L;

    /**
     * 主键
     */
    @ApiModelProperty("主键")
    private Integer id;

    /**
     * 订单号
     */
    @ApiModelProperty("订单号")
    private Long orderCode;

    /**
     * 车辆id
     */
    @ApiModelProperty("车辆id")
    private Integer carId;

    /**
     * 用户id
     */
    @ApiModelProperty("用户id")
    private Integer userId;

    /**
     * 用户类型（1：op，2：用户）
     */
    @ApiModelProperty("用户类型")
    private Integer userType;

    /**
     * 保养单号
     */
    @ApiModelProperty("保养单号")
    private Integer maintenanceId;

    /**
     * 应保养里程
     */
    @ApiModelProperty("应保养里程")
    private BigDecimal maintainableMileage;

    /**
     * 实际保养里程
     */
    @ApiModelProperty("实际保养里程")
    private BigDecimal actualMaintainMileage;

    /**
     * 实际保养日期
     */
    @ApiModelProperty("实际保养日期")
    private LocalDate actualMaintainDate;

    /**
     * 应保养日期
     */
    @ApiModelProperty("应保养日期")
    private LocalDateTime maintainableDate;

    /**
     * 保养门店ID
     */
    @ApiModelProperty("保养门店ID")
    private String storeName;

    /**
     * 1：A类，2：B类
     */
    @ApiModelProperty("1：A类，2：B类")
    private Integer type;

    /**
     * 保养次数
     */
    @ApiModelProperty("保养次数")
    private Integer count;

    /**
     * 保养卡图片url
     */
    @ApiModelProperty("保养卡图片url")
    private String maintenanceUrl;

    /**
     * 结算单图片url
     */
    @ApiModelProperty("结算单图片url")
    private String settlementUrl;

    /**
     * 提交用户ID
     */
    @ApiModelProperty("提交用户ID")
    private Integer submitMemberId;

    /**
     * 提交时间
     */
    @ApiModelProperty("提交时间")
    private LocalDateTime submitDate;

    /**
     * 采购日期
     */
    @ApiModelProperty("采购日期")
    private LocalDateTime purchaseDate;

    /**
     * 状态（0：待审核，1：待保养，2：使用期，3：审核通过，4：审核驳回）
     */
    @ApiModelProperty(" 状态（0：待审核，1：待保养，2：使用期，3：审核通过，4：审核驳回）")
    private Integer status;

    /**
     * 0：无，1：上传图片不清晰，2：上传保养卡信息不全，3：上传保养卡无授权店签字盖章
            默认为0
     */
    @ApiModelProperty("0：无，1：上传图片不清晰，2：上传保养卡信息不全，3：上传保养卡无授权店签字盖章默认为0")
    private Integer rejectReason;

    /**
     * 操作方（1：op，2：经销商）
     */
    @ApiModelProperty("操作方（1：op，2：经销商）")
    private Integer operationType;

    /**
     * 操作方
     */
    @ApiModelProperty("操作方")
    private String operationId;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private LocalDateTime gmtCreate;

    /**
     * 更新时间
     */
    @ApiModelProperty("更新时间")
    private LocalDateTime gmtModified;

    /**
     * 审核日期
     */
    @ApiModelProperty("审核日期")
    private LocalDateTime checkDate;

    /**
     * 保养类型 1：A类，2：B类
     */
    private String typeStr;

    /**
     * 状态（0：待审核，1：待保养，2：使用期，3：审核通过，4：审核驳回）
     */
    private String statusStr;

    /**
     * 0：无，1：上传图片不清晰，2：上传保养卡信息不全，3：上传保养卡无授权店签字盖章
     默认为0
     */
    private String rejectReasonStr;

    public void setType(Integer type) {
        this.type = type;
        if(null != type) {
            this.typeStr = MaintenanceTypeEnum.getName(type);
        }
    }

    public void setStatus(Integer status) {
        this.status = status;
        this.statusStr = MaintenanceStatusEnum.getName(status);
    }

    public void setRejectReason(Integer rejectReason) {
        this.rejectReason = rejectReason;
        if((null != rejectReason) && (0 != rejectReason)) {
            this.rejectReasonStr = MaintenanceRejectEnum.getName(rejectReason);
        }
    }

}
